package com.ma.chapter8.executors;

import lombok.extern.slf4j.Slf4j;

/**
 * @ClassName TestExecutorNewCachedThreadPool
 * @Author: mayongqiang
 * @DATE 2022/3/21 20:39
 * @Description: 2、带缓存的线程池
 */

/*默认构造器
public ThreadPoolExecutor(int corePoolSize,
                  int maximumPoolSize,
                  long keepAliveTime,
                  TimeUnit unit,
                  BlockingQueue<Runnable> workQueue) * */
@Slf4j(topic = "m.TestExecutorNewCachedThreadPool")
public class CachedThreadPool {
        /* 2、  newCachedThreadPool()
        return new ThreadPoolExecutor(0, Integer.MAX_VALUE,60L, TimeUnit.SECONDS,
                                    new SynchronousQueue<Runnable>());}
           核心线程数是 0， 最大线程数是 Integer.MAX_VALUE，救急线程的空闲生存时间是 60s，意味着
             - 全部都是救急线程（60s 后可以回收）
             - 救急线程可以无限创建
           队列采用了 SynchronousQueue 实现特点是，它没有容量，没有线程来取是放不进去的（一手交钱、一手交货）
         */
}
